package com.ato.java;

/**
 * @author wangjing
 * @create 2021--06--23--22:45
 */
public class OOPTest
{

    public static void main(String[] args){

    }
}
/**
 * 属性（成员变量）和 局部变量
 * 1：相同点
 *      都是变量，定义变量的格式是一致的：
 *      都是先声明，在使用
 *      变量都有它自己的作用域
 * 2：不同点
 *      2.1：在类中声明的位置不一样
 *          属性：直接在类的{}里
 *          局部变量：将声明在方法内，方法形参，代码块内，构造器形参，构造器内部的变量成为局部变量
 *      2.2：关于全县修饰符的不同
 *          属性：可以在声明属性时，指明起权限，使用权限修饰符
 *                  常用的有 private public  缺省的（没写）protected  ----> 封装性的时候再说
 *          局部变量：不可以使用权限修饰符的  ：其实在方法处就声明了权限了
 *      2.3：默认初始化值
 *          属性：类里的属性，根据其类型，都有初始化值
 *              整型：byte short int lang  ：默认为 0
 *              浮点型：float double 默认为 0.0
 *              字符型：char  ：0  或者 \u0000
 *              布尔型：boolean ：false
 *              引用数据类型：数组 接口 类 ：null
 *          局部变量： 没有默认值：也就是要在调用钱必须赋值  特殊：形参：在调用时在赋值
 *      2.4：内存中加载位置不一样
 *          属性：加载到堆空间中  ：非static
 *          局部变量：加载到栈空间    ：非static
 *
 *
 *
 *
 *  方法的使用：
 *          方法：刻画类应该具有的功能
 *          public void eat{}   无返回值
 *          public void sleep(int hour){}   无返回值 有形参
 *          public String getName(){}       返回字符串 无形参
 *          public String getNation(String nation){}    返回字符串 有形参
 *          权限修饰符 返回值类型  方法名(形参列表){
 *              方法体
 *          }
 *          修饰符： static final abstract
 *
 *          3.1 详解：
 *                  权限修饰符：和属性的权限修饰符类似 ：private   public  缺省 protected
 *
 *          3.2  返回值：
 *                  有返回值：  则必须在方法声明时，指定返回值类型，同时，这个方法中需要return 关键字来返回指定类型的变量或者常亮
 *                  无返回值：   则方法声明时，使用void 表示，通常没有返回值的方法中，就不需要return，但是如果使用的话，只能用于结束程序 return;
 *
 *                  定义方法时，到底该不该有返回值：根据实际情况判断
 *
 *          3.3   方法名：标识符
 *                          遵守标识符规则和规范，见名知意
 *                          形参：和JS一样，只是多了个数据类型 多个形参用,隔开
 *
 *
 *          return关键字用法：1：返回数据 2：结束程序  和js一样return后就不能写了
 *
 *
 *
 *          方法的调用
 *          User u1 =new User();
 *          u1.talk('中文');
 * */
class User{
//    属性
        String name = "王晶";
//
    public void talk (String language){ //  language就是局部变量
        String who = "谁";//局部变量
        System.out.println(   "说"+ language );
        sleep(4);//  方法中可以调用其他方法，也可以调用自己，称之为递归。但是必须要有终止条件
    }
    public void  sleep (int hour){
        System.out.println(   "睡了"+ hour );

    }
}
